﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Recursos.Model
{
    public class HistorialUsoModel
    {
        public int GetPeriodo(int año, int numPeriodo, int modalidad)
        {
            var datacontext = new DataClassesRecursosDataContext();
            var periodos = new Repository<Periodo>(datacontext);
            var periodo = periodos.SearchOne(
                p =>
                p.Año == año && p.NumeroPeriodo == numPeriodo &&
                p.TipoPeriodo.id.Equals(modalidad));
            return periodo != null ? periodo.id : 0;
        }


       /* public int obtenerBloquesTotales()
        {
            var reservModel = new RservacionModel();
            var reservaciones =
                reservModel.CargarReservacionesNormalesEspacio(espacio).Where(e => e.IdPeriodo == periodo).ToList();
            int bloquestotales = reservaciones.Sum(a => a.Bloques).Value;
            return bloquestotales;
        
        }*/

        public void obtenerBloquesTotalesParticular()
        {
            /*var reservModel = new RservacionModel();
            var reservaciones =
                reservModel.CargarReservacionesNormalesEspacio(espacio).Where(e => e.IdPeriodo == periodo).ToList();
            int bloquestotales = reservaciones.Sum(a => a.Bloques).Value;
            return bloquestotales;*/

        }


        public List<EntityReservacion> ObtenerReservaciones(int espacio, int periodo)
        {
            var reservModel = new RservacionModel();
            var reservaciones =
                reservModel.CargarReservacionesNormalesEspacio(espacio).Where(e => e.IdPeriodo == periodo).ToList();
            var grupos = new GrupoModel();
            var cursos = new CursoModel();
            var profes = new UsuarioModel();
            var rParticulares = reservModel.CargarReservacionesParticualresEspacio(espacio).ToList();
            var rCursos = reservModel.CargarReservacionesEspacio2(espacio,periodo).ToList();
            var listaReservaciones= new List<EntityReservacion>();
            var periodoM = new PeriodoModel();
            

            foreach (var r in reservaciones)
            {
                var entity = new EntityReservacion();
                entity.BloquesReservados = reservaciones.Sum(a => a.Bloques).Value;
                var registro = rCursos.Where(x => x.IdReservacion == r.id).ToList();
                var registro1 = rParticulares.Where(x => x.IdReservacion == r.id).ToList();

                if (registro.Any())
                {
                    var grupo =  grupos.CargarGrupoById(registro.First().IdGrupo);
                    var curso = cursos.GetCursoById(grupo.IdCurso);
                    entity.CodigoGrupo = grupo.Codigo;
                    entity.Curso = curso.Nombre;
                    entity.Carrera = curso.Carrera.Nombre;
                    entity.Profesor = profes.CargarPorId(grupo.IdProfesor).Nombre;
                    entity.Tipo = "curso";
                    entity.MaximoBloquesParaReservar = periodoM.CargarPorId(periodo).DiasHabiles * 14;
                    listaReservaciones.Add(entity);
                    entity.Responsable = entity.InstitucioResponsable="a ";
                    
                }
                
                else if(registro1.Any())
                {
                    entity.InstitucioResponsable = registro1.First().InstitucionResponsable;
                    entity.Responsable = registro1.First().NombreResponsable;
                    entity.Tipo = "particular";
                    entity.MaximoBloquesParaReservar = periodoM.CargarPorId(periodo).DiasHabiles * 14;
                    listaReservaciones.Add(entity);
                    entity.CodigoGrupo =
                        entity.Curso =
                        entity.Carrera = entity.Profesor = entity.Tipo  = "b ";

                }
                
                    
            }
            return listaReservaciones.ToList();
        }


    }
}